﻿// owner 蒋家伟

#pragma once

#include "WeakReference.h"
#include "CommonWidget_home.h"

class QWidget;
namespace jsdk
{
    class COMMONWIDGET_EXPORT IResourceManagerWidget : public WeakReference
    {
    public:
        /// \ brief                 创建一个树形的资源管理器控件窗口
        /// \ in rootFilePaths      根目录的路径，可以是文件也可以是文件夹
        /// \ note1 :               内部会自动合并目录，例如 /root/A, /root/A/C, 内部会舍弃掉 /root/A/C 因为路径存在重叠
        /// \ in isTransparent      背景是否透明
        /// \ in isOnlyDisplayDir   表示ui控件是否只显示文件夹节点而不显示文件
        /// \ note2 :               树形节点只关心文件夹，不再关心文件。在某些不关心文件的时候更有效率
        /// \ return                一个IResourceManagerWidget
        static OwnerPtr<IResourceManagerWidget> create(std::vector<std::wstring>&& rootFilePaths, bool isTransparent = false,  bool isOnlyDisplayDir = false);

        /// \ brief 刷新页面
        /// \ in 使用新路径刷新页面
        virtual void refresh(std::vector<std::wstring>&& rootFilePaths) = 0;

        /// \ brief 显示窗口
        virtual void show() = 0;

        /// \ brief 设置是否只读(默认只读为了保证数据的安全)
        /// \ note 只读状态，无法删除
        virtual void setReadOnly(bool readOnly) = 0;

        /// \ brief 设置表头是否隐藏
        virtual void setHideHeader(bool isHide) = 0;

    public:

        /// \brief 获取Qt窗口对象
        virtual const QWidget* getQWidget() const = 0;

        /// \ brief 获取Qt窗口对象
        virtual QWidget* getQWidget() = 0;
    };
}
